package router

// RouteMetadata 路由元数据，用于自动生成菜单
type RouteMetadata struct {
	// 菜单基本信息
	Title      string `json:"title"`      // 菜单标题
	Path       string `json:"path"`       // 前端路由路径
	Component  string `json:"component"`  // 前端组件路径
	Icon       string `json:"icon"`       // 菜单图标
	Permission string `json:"permission"` // 权限标识符，如 system:user:list
	ParentPath string `json:"parentPath"` // 父级菜单路径，用于构建菜单树
	OrderNum   int    `json:"orderNum"`   // 显示顺序
	Hidden     bool   `json:"hidden"`     // 是否隐藏
	KeepAlive  bool   `json:"keepAlive"`  // 是否缓存
	AlwaysShow bool   `json:"alwaysShow"` // 是否总是显示

	// 菜单类型
	MenuType string `json:"menuType"` // 菜单类型: directory(目录), menu(菜单), button(按钮)

	// 菜单分类
	MenuCategory string `json:"menuCategory"` // 菜单分类: system(系统菜单), tenant(租户菜单), common(通用菜单)

	// API信息
	Method  string `json:"method"`  // HTTP方法: GET, POST, PUT, DELETE等
	APIPath string `json:"apiPath"` // API路径

	// 其他配置
	RequireAuth bool     `json:"requireAuth"` // 是否需要认证
	Roles       []string `json:"roles"`       // 允许访问的角色编码列表
	Tags        []string `json:"tags"`        // 标签，用于分类
}

// RouteMetadataFunc 用于注册路由元数据的函数类型
type RouteMetadataFunc func() RouteMetadata
